*/
#define ASSEMBLY 1
-#ifdef CONFIG_DEBUG_INFO
-#undef CONFIG_DEBUG_INFO
-#endif
#include <linux/linkage.h>
#include <asm/segment.h>
#include <asm/smp.h>
*/
retint_check:
+ CFI_DEFAULT_STACK
movl threadinfo_flags(%rcx),%edx
andl %edi,%edx
CFI_REMEMBER_STATE
#include <xen/interface/elfnote.h>
- .text
+ .section .bootstrap.text, "ax", @progbits
.code64
#define VIRT_ENTRY_OFFSET 0x0
.org VIRT_ENTRY_OFFSET
cpu_set(cpu, cpu_present_map);
}
#else
-void __init MP_processor_info (struct mpc_config_processor *m)
+static void __cpuinit MP_processor_info (struct mpc_config_processor *m)
{
num_processors++;
}
* This is basically '__unlazy_fpu', except that we queue a
* multicall to indicate FPU task switch, rather than
* synchronously trapping to Xen.
- * This must be here to ensure both math_state_restore() and
- * kernel_fpu_begin() work consistently.
* The AMD workaround requires it to be after DS reload, or
* after DS has been cleared, which we do in __prepare_arch_switch.
*/
HYPERVISOR_set_segment_base(SEGBASE_GS_USER, next->gs);
/*
- * Switch the PDA and FPU contexts.
+ * Switch the PDA context.
*/
prev->userrsp = read_pda(oldrsp);
write_pda(oldrsp, next->userrsp);
if (ebda_size > 64*1024)
ebda_size = 64*1024;
}
+#else
+#define discover_ebda() ((void)0)
#endif
void __init setup_arch(char **cmdline_p)
check_efer();
-#ifndef CONFIG_XEN
discover_ebda();
-#endif
init_memory_mapping(0, (end_pfn_map << PAGE_SHIFT));
c->x86_capability[2] = cpuid_edx(0x80860001);
}
-#ifdef CONFIG_X86_XEN_GENAPIC
c->apicid = phys_pkg_id(0);
-#endif
/*
* Vendor-specific initialization. In this section we
__flush_tlb_one(vaddr);
}
-static void set_pte_phys_ma(unsigned long vaddr,
- unsigned long phys, pgprot_t prot)
+static __init void set_pte_phys_ma(unsigned long vaddr,
+ unsigned long phys, pgprot_t prot)
{
pgd_t *pgd;
pud_t *pud;
}
/*
- * At this point it only supports vsyscall area.
+ * This only supports vsyscall area.
*/
-void __set_fixmap_user (enum fixed_addresses idx, unsigned long phys, pgprot_t prot)
+void __init
+__set_fixmap_user (enum fixed_addresses idx, unsigned long phys, pgprot_t prot)
{
unsigned long address = __fix_to_virt(idx);
void __devinit smp_prepare_boot_cpu(void)
{
- cpu_present_map = cpumask_of_cpu(0);
- cpu_online_map = cpumask_of_cpu(0);
+ prefill_possible_map();
}
#ifdef CONFIG_HOTPLUG_CPU